class InvestimentosController < ApplicationController

  filter_access_to :all, :attribute_check => true, :load_method => :get_chain

  def index
    @investimentos = @caracterizacao.investimentos.all(:include => :documento_fiscal).
                                     paginate :page => params[:page], :per_page => 15
    redirect_to :action => 'new' if @investimentos.empty?
  end

  def new
    @investimento = Investimento.new
    @investimento.build_documento_fiscal
  end

  def edit
    @investimento.build_documento_fiscal
  end

  def create
    @investimento = @caracterizacao.investimentos.new(params[:investimento])
    if @investimento.save
      flash[:notice] = "Investimento salvo com sucesso"
      redirect_to :action => 'new'
    else
      rebuild_documento_fiscal
      render :action => 'new'
    end
  end

  def update
    if @investimento.update_attributes(params[:investimento])
      flash[:notice] = 'Investimento atualizado com sucesso.'
      redirect_to [@pleito, :caracterizacao, :investimentos]
    else
      rebuild_documento_fiscal
      render :action => "edit"
    end
  end

  def destroy
    @investimento.destroy
    flash[:notice] = 'Investimento excluído com sucesso.'
    redirect_to [@pleito, :caracterizacao, :investimentos]
  end

  private

  def get_chain
    params[:id] ? get_not_nested : get_nested
  end

  def get_not_nested
    @investimento = Investimento.find(params[:id])
    @caracterizacao = @investimento.caracterizacao
    @pleito =  @caracterizacao.pleito
  end

  def get_nested
    @pleito = Pleito.find(params[:pleito_id])
    @caracterizacao = @pleito.caracterizacao
    @pleito
  end

  def rebuild_documento_fiscal
    if params[:investimento][:documento_fiscal_attributes]
      @investimento.documento_fiscal_id = 0
    else
      @investimento.build_documento_fiscal
    end
  end

end
